Java的问题```

来源:百度知道 编辑:UC知道 时间:2024/06/04 22:06:36
谁能帮我解释一下`java中对象的意思``还有引用传递的意思啊```先谢谢你们了````我自己老觉得```只有这种格式才是```A a = new A();才为是对象实例化``可是似乎好像是不对的````有时``A a = s.read();后面跟的是个方法```麻烦大家帮我解答下``明白了`必有重分``重谢!

比如S类中 一个方法。

A read()
{
A b = new A();
return b;

}

这样
A a = s.read();

A a = s.read();这个read方法肯定是返回了A的一个实例对象的引用才可以赋值A的一个引用的

java中有类,对象是类的实例化,对象是在堆内存中分配,一旦new一个对象,就会调用其构造方法,创建这个对象,然后堆内存中分配其成员变量,因为对象是在堆内存,所以,他肯定有一个内存地址,我们把这个地址赋值给A类型的变量a,这个是在对堆栈分配的,因为它是局部变量,引用的传递就是把对象的地址来回传递,一般都是赋值给一个本类型的变量就可以了,,当然也可以赋给父类,这可能就涉及到多态了

A a = s.read();像这种就是赋值.意思是A类型的对象a,引用了s.read();A类型的对象a,是s.read()的返回值类型.
你的理解是对的,只有用new关键字的才是实例化对象.

A a=new A();是最基础的实例初始化方法.
A a=s.read();的前提是s.read的返回的是一个类A的实例,这段代码才成立

对象的含义就是一个类的某一个实例,比如:我们每个人就是人类的一个对象.如前文叙述a就是类A的一个对象.

引用传递是指java对于非基本类型(基本类型包括int double等类型)也就是对象的传递方式,这个争论比较多,有人说java的传值方式针对基本类型和对象是不同的,基本类型采用的是传值,对象采用的是传引用;也有说法是java无论基本类型还是对象都是采用传值方式,个人更倾向于后者.

不用new也可以实例化的:A a = (A)Class.ForName("package.A").newInstance();

实例可以有多种方式的啊,1,new;2,newInstance3,调用赋值方式从其他方法中返回一个实例化对象。
A a=s.read()就属于后者,s.read这个方法的返回值类型就是一个类实例。